package com.jzo2o.es.utils;

import com.jzo2o.common.utils.CollUtils;
import co.elastic.clients.elasticsearch._types.FieldValue;

import java.util.ArrayList;
import java.util.List;

/**
 * Elasticsearch工具类，用于处理Term查询相关的类型转换
 */
public class TermUtils {

    /**
     * 将任意类型的集合转换为Elasticsearch的FieldValue集合
     * 用于构建Term、Terms等查询条件时的参数适配
     *
     * @param sources 源数据集合（元素将通过toString()转换为字符串）
     * @param <T>     源数据类型
     * @return Elasticsearch FieldValue集合；若源集合为空/Null，则返回Null
     */
    public static <T> List<FieldValue> parse(List<T> sources) {
        // 源集合为空时直接返回Null
        if (CollUtils.isEmpty(sources)) {
            return null;
        }
        // 转换源集合元素为FieldValue并收集
        List<FieldValue> values = new ArrayList<>();
        sources.forEach(source -> values.add(FieldValue.of(source.toString())));
        return values;
    }
}
